#include <stdio.h>    // 提供输入输出函数，如 printf 和 fgets
#include <string.h>   // 提供字符串处理函数，如 strtok 和 strcpy
#include <stdlib.h>   // 提供 atoi 函数，将字符串转换为整数

int main() {
    // step 1# 读取一行输入（以空格分隔的日志条数）
    char input[1000];  // 定义一个字符数组用于存储输入
    fgets(input, 1000, stdin);  // 从标准输入读取一行数据

    // step 2# 解析输入为多个日志条数
    char logs[100][10];  // 存储每个时间点的日志条数字符串（最多100个，每个最多9位）
    int logCount = 0;    // 日志条数计数器
    char *token = strtok(input, " ");  // 使用空格分割输入，获取第一个日志数

    while (token != NULL) {  // step 3# 遍历所有分割出的字符串
        strcpy(logs[logCount], token);  // 复制当前日志数到 logs 数组中
        logCount++;  // 日志计数加1
        token = strtok(NULL, " ");  // 获取下一个日志数
    }

    // step 4# 初始化积分统计变量
    int totalCount = 0;  // 累积的日志总条数
    int maxScore = 0;    // 最大积分结果

    // step 5# 遍历每个时间点，计算积分
    for (int i = 0; i < logCount; i++) {
        int logNum = atoi(logs[i]);  // 将当前时间点的日志字符串转为整数
        if (logNum == 0) {  // 若当前日志条数为0，跳过该时间点
            continue;
        }

        totalCount += logNum;  // step 6# 累加日志总条数

        int score = 0;  // 当前时间点的积分初始化为0

        // step 7# 计算从第0秒到当前第i秒的积分
        for (int j = 0; j <= i; j++) {
            int logAtJ = atoi(logs[j]);  // 获取第j秒的日志条数
            if (totalCount > 100 && i == j) {  // 特殊情况：第i秒加的日志使总数超过100
                score += logNum - (totalCount - 100);  // 仅计入不超过100部分的积分
            } else {
                score += logAtJ - (i - j) * logAtJ;  // 正常积分计算，考虑延迟扣分
            }
        }

        // step 8# 更新最大积分值
        if (score > maxScore) {
            maxScore = score;
        }

        // step 9# 若总日志数达到或超过100，提前终止处理
        if (totalCount >= 100) {
            break;
        }
    }

    // step 10# 输出结果
    printf("%d\n", maxScore);  // 打印最终最大积分

    return 0;
}
